package gdf

import (
	"fmt"
	"gitee.com/liumou_site/logger"
	"io"
	"net/http"
)

// GetRangeStatus 检查给定URL是否支持HTTP Range请求。
// 参数:
//   - url: 要检查的资源地址。
//
// 返回值:
//   - 布尔值，表示该URL是否支持Range请求。
func GetRangeStatus(url string) bool {
	// 创建一个带有Range头部的HTTP GET请求，请求文件的第一个字节
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		logger.Error("创建请求时出错:", err)
		return false
	}
	req.Header.Set("Range", "bytes=0-0")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		logger.Error("发送请求时出错:", err)
		return false
	}
	defer func(Body io.ReadCloser) {
		err := Body.Close()
		if err != nil {
			logger.Error("关闭响应体时出错:", err)
		}
	}(resp.Body)

	// 检查响应状态码是否为206 Partial Content，以确定是否支持Range请求
	if resp.StatusCode == http.StatusPartialContent {
		fmt.Printf("URL %s 支持范围请求。\n", url)
		return true
	} else {
		return false
	}
}
